package com.zr.influx.service;


import com.zr.influx.model.ForexDataDTO;

import java.time.Instant;
import java.util.List;
import java.util.Optional;

public interface ForexQueryService {

    /**
     * 获取所有可用的货币对
     * @return 货币对列表
     */
    List<String> getAllCurrencyPairs();

    /**
     * 获取指定货币对的最新行情
     * @param currencyPair 货币对
     * @return 最新行情数据
     */
    Optional<ForexDataDTO> getLatestPrice(String currencyPair);

    /**
     * 按时间范围查询行情数据
     * @param currencyPair 货币对
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param exchange 交易所（可选）
     * @return 行情数据列表
     */
    List<ForexDataDTO> getPricesInRange(String currencyPair, Instant startTime,
                                        Instant endTime, String exchange);

    /**
     * 获取聚合后的行情数据
     * @param currencyPair 货币对
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param interval 聚合时间间隔（如1h, 30m）
     * @return 聚合后的行情数据
     */
    List<ForexDataDTO> getAggregatedData(String currencyPair, Instant startTime,
                                         Instant endTime, String interval);
}
